home *** CD-ROM | disk | FTP | other *** search
/ Amiga Games: 500 MB Amiga Software / 500 MB Amiga Software - Euber 130 - Amiga Games Disc & Mag.iso / spiele / publicdomain / rocky / b.macros < prev    next >
Text File  |  1994-12-24  |  4KB  |  312 lines

  1. *******************************************************************
  2. *    MACROS FOR EASY ACCESS TO SURROUNDING CELLS IN 2-D ARRAY
  3. *
  4. *    A1 -> cell map
  5. *    A2 -> parallel flags map
  6. *    D7 =  SCRATCH REGISTER
  7. *******************************************************************
  8.  
  9. *
  10. *    COMPARE CONSTANT    e.g. COMP_D AIR    (read: compare down air)
  11. *
  12. *    U/R/D/L        (Up,Right,Down,Left)
  13.  
  14. COMP_U        MACRO
  15.         cmp.b    #\1,-COLUMNS(a1)
  16.         ENDM
  17.  
  18. COMP_R        MACRO
  19.         cmp.b    #\1,1(a1)
  20.         ENDM
  21.  
  22. COMP_D        MACRO
  23.         cmp.b    #\1,COLUMNS(a1)
  24.         ENDM
  25.  
  26. COMP_L        MACRO
  27.         cmp.b    #\1,-1(a1)
  28.         ENDM
  29.  
  30. COMP_RR        MACRO
  31.         cmp.b    #\1,2(a1)
  32.         ENDM
  33.  
  34. COMP_LL        MACRO
  35.         cmp.b    #\1,-2(a1)
  36.         ENDM
  37.  
  38. *
  39. *    COMPARE CONSTANT
  40. *
  41. *    DIAGONALS
  42.  
  43. COMP_UR        MACRO
  44.         cmp.b    #\1,-COLUMNS+1(a1)
  45.         ENDM
  46.  
  47. COMP_UL        MACRO
  48.         cmp.b    #\1,-COLUMNS-1(a1)
  49.         ENDM
  50.  
  51. COMP_DR        MACRO
  52.         cmp.b    #\1,COLUMNS+1(a1)
  53.         ENDM
  54.  
  55. COMP_DL        MACRO
  56.         cmp.b    #\1,COLUMNS-1(a1)
  57.         ENDM
  58.  
  59. *
  60. *    COMPARE CONSTANT MASKED        e.g.    COMPM_R    MASK4,FROCK
  61. *
  62. *    U/R/D/L
  63.  
  64. COMPM_U        MACRO
  65.         moveq    #\1,d7
  66.         and.b    -COLUMNS(a1),d7
  67.         cmp.b    #\2,d7
  68.         ENDM
  69.  
  70. COMPM_R        MACRO
  71.         moveq    #\1,d7
  72.         and.b    1(a1),d7
  73.         cmp.b    #\2,d7
  74.         ENDM
  75.  
  76. COMPM_D        MACRO
  77.         moveq    #\1,d7    
  78.         and.b    COLUMNS(a1),d7
  79.         cmp.b    #\2,d7
  80.         ENDM
  81.  
  82. COMPM_L        MACRO
  83.         moveq    #\1,d7    
  84.         and.b    -1(a1),d7
  85.         cmp.b    #\2,d7
  86.         ENDM
  87.  
  88. *
  89. *    COMPARE REGISTER MASKED        e.g.    CMPMR_U    MASK4,D0
  90. *
  91. *    U/R/D/L
  92.  
  93. CMPMR_U        MACRO
  94.         moveq    #\1,d7
  95.         and.b    -COLUMNS(a1),d7
  96.         cmp.b    \2,d7
  97.         ENDM
  98.  
  99. CMPMR_R        MACRO
  100.         moveq    #\1,d7
  101.         and.b    1(a1),d7
  102.         cmp.b    \2,d7
  103.         ENDM
  104.  
  105. CMPMR_D        MACRO
  106.         moveq    #\1,d7    
  107.         and.b    COLUMNS(a1),d7
  108.         cmp.b    \2,d7
  109.         ENDM
  110.  
  111. CMPMR_L        MACRO
  112.         moveq    #\1,d7    
  113.         and.b    -1(a1),d7
  114.         cmp.b    \2,d7
  115.         ENDM
  116.  
  117. *
  118. *    COMPARE REG/REG MASKED        e.g.    CPMRR_U    d1,D0
  119. *                        d1 is mask
  120. *    U/R/D/L
  121.  
  122. CPMRR_U        MACRO
  123.         move.b    -COLUMNS(a1),d7
  124.         and.b    \1,d7
  125.         cmp.b    \2,d7
  126.         ENDM
  127.  
  128. CPMRR_R        MACRO
  129.         move.b    1(a1),d7
  130.         and.b    \1,d7
  131.         cmp.b    \2,d7
  132.         ENDM
  133.  
  134. CPMRR_D        MACRO
  135.         move.b    COLUMNS(a1),d7
  136.         and.b    \1,d7
  137.         cmp.b    \2,d7
  138.         ENDM
  139.  
  140. CPMRR_L        MACRO
  141.         move.b    -1(a1),d7
  142.         and.b    \1,d7
  143.         cmp.b    \2,d7
  144.         ENDM
  145.  
  146. *
  147. *    SET A CEL CONSTANT
  148. *
  149. *    CURRENT U/R/D/L
  150.  
  151. SETCEL        MACRO
  152.         move.b    #\1,(a1)
  153.         st    (a2)
  154.         ENDM
  155.  
  156. SET_U        MACRO
  157.         move.b    #\1,-COLUMNS(a1)
  158.         st    -COLUMNS(a2)
  159.         ENDM
  160.  
  161. SET_R        MACRO
  162.         move.b    #\1,1(a1)
  163.         st    1(a2)
  164.         ENDM
  165.  
  166. SET_D        MACRO
  167.         move.b    #\1,COLUMNS(a1)
  168.         st    COLUMNS(a2)
  169.         ENDM
  170.  
  171. SET_L        MACRO
  172.         move.b    #\1,-1(a1)
  173.         st    -1(a2)
  174.         ENDM
  175.  
  176. *
  177. *    SET A CEL CONSTANT
  178. *
  179. *    DIAGONALS
  180.  
  181. SET_UR        MACRO
  182.         move.b    #\1,-COLUMNS+1(a1)
  183.         st    -COLUMNS+1(a2)
  184.         ENDM
  185.  
  186. SET_UL        MACRO
  187.         move.b    #\1,-COLUMNS-1(a1)
  188.         st    -COLUMNS-1(a2)
  189.         ENDM
  190.  
  191. SET_DR        MACRO
  192.         move.b    #\1,COLUMNS+1(a1)
  193.         st    COLUMNS+1(a2)
  194.         ENDM
  195.  
  196. SET_DL        MACRO
  197.         move.b    #\1,COLUMNS-1(a1)
  198.         st    COLUMNS-1(a2)
  199.         ENDM
  200.  
  201. *
  202. *    COMPARE REGISTER
  203. *
  204. *    U/R/D/L
  205.  
  206. COMPR_U        MACRO
  207.         cmp.b    -COLUMNS(a1),\1
  208.         ENDM
  209.  
  210. COMPR_R        MACRO
  211.         cmp.b    1(a1),\1
  212.         ENDM
  213.  
  214. COMPR_D        MACRO
  215.         cmp.b    COLUMNS(a1),\1
  216.         ENDM
  217.  
  218. COMPR_L        MACRO
  219.         cmp.b    -1(a1),\1
  220.         ENDM
  221.  
  222. *
  223. *    COMPARE REGISTER
  224. *
  225. *    DIAGONALS
  226.  
  227. COMPR_UR    MACRO
  228.         cmp.b    -COLUMNS+1(a1),\1
  229.         ENDM
  230.  
  231. COMPR_UL    MACRO
  232.         cmp.b    -COLUMNS-1(a1),\1
  233.         ENDM
  234.  
  235. COMPR_DR    MACRO
  236.         cmp.b    COLUMNS+1(a1),\1
  237.         ENDM
  238.  
  239. COMPR_DL    MACRO
  240.         cmp.b    COLUMNS-1(a1),\1
  241.         ENDM
  242.  
  243. ************************************************************************
  244. SETCELR        MACRO
  245.         move.b    \1,(a1)
  246.         st    (a2)
  247.         ENDM
  248.  
  249. SETR_R        MACRO
  250.         move.b    \1,1(a1)
  251.         st    1(a2)
  252.         ENDM
  253.  
  254. SETR_L        MACRO
  255.         move.b    \1,-1(a1)
  256.         st    -1(a2)
  257.         ENDM
  258.  
  259. SETR_D        MACRO
  260.         move.b    \1,COLUMNS(a1)
  261.         st    COLUMNS(a2)
  262.         ENDM
  263.  
  264. SETR_U        MACRO
  265.         move.b    \1,-COLUMNS(a1)
  266.         st    -COLUMNS(a2)
  267.         ENDM
  268.  
  269. SETR_RR        MACRO
  270.         move.b    \1,2(a1)
  271.         st    2(a2)
  272.         ENDM
  273.  
  274. SETR_LL        MACRO
  275.         move.b    \1,-2(a1)
  276.         st    -2(a2)
  277.         ENDM
  278.  
  279. ************************************************************************
  280. SETR_UR        MACRO
  281.         move.b    \1,-COLUMNS+1(a1)
  282.         st    -COLUMNS+1(a2)
  283.         ENDM
  284.  
  285. SETR_UL        MACRO
  286.         move.b    \1,-COLUMNS-1(a1)
  287.         st    -COLUMNS-1(a2)
  288.         ENDM
  289.  
  290. SETR_DR        MACRO
  291.         move.b    \1,COLUMNS+1(a1)
  292.         st    COLUMNS+1(a2)
  293.         ENDM
  294.  
  295. SETR_DL        MACRO
  296.         move.b    \1,COLUMNS-1(a1)
  297.         st    COLUMNS-1(a2)
  298.         ENDM
  299. ************************************************************************
  300. *    AUTOMATIC ANIMATION    e.g.     NEXCELL    MASK4,GEGG
  301. ************************************************************************
  302.  
  303. NEXCELL        MACRO    
  304.         moveq    #(-(\1))-1,d7
  305.         move.w    d0,d6
  306.         addq.w    #1,d6
  307.         and.w    d6,d7
  308.         or.w    #\2,d7
  309.         SETCELR    D7
  310.         ENDM
  311.  
  312.